# -*- coding: utf-8 -*-
# __author__ = 'xxx'
# env: python 3.9.2 kubernetes 22.6.0
# fuction: 获取名空间对象

from  kubernetes import client,config
import yaml

def getnameobj():
    
    ## 字典形式的 config
    configdirct=""
    config.load_kube_config_from_dict(configdirct)

    #print title


    #print(client.CoreV1Api().read_node("c750"))
    # 获取到的是一个对象
    # 获取所有 node 对象
    print("list node after herer")
    getallnode=client.CoreV1Api().list_node().items


    # 模拟命令行货获取获取 命令行的 node 的格式化输出

    print("%-8s\t%s\t%s\t%s\t%s" %("NAME","STATUS","ROLES","AGE","VERSION"))
    for nonde in getallnode:

        print()

        #获取最后一次 心跳对象状态结果,
        # 这种方法有一个缺陷就是 node 节点如果没有正常启动，会发生误判

        getheartstatus=nonde.status.conditions
        nondestatus=getheartstatus[len(getheartstatus) - 1].type

        print("%-8s\t%s" % (nonde.metadata.name,nondestatus))

    # 获取指定 node 对象状态
    #getnode=client.CoreV1Api().read_node(name='c750')
    #getnode=client.CoreV1Api().read_node_with_http_info(name="c750")
    #print(getnode)

    #print(client.CoreV1Api().list_namespace(""))
    #print(client.CoreV1Api().list_namespaced_pod("kube-system"))

    print("get namespace object")
    print(client.CoreV1Api().list_namespace())


    # 获取 指定 空间的 pod 对象
    print("*"*90)
    getpod=client.CoreV1Api().list_namespaced_pod("first")
    print(getpod)

    # format print get core version
    #print("%-40s %s" %
    #      ("core", ",".join(client.CoreV1Api().list_namespace())))

getnameobj()

